A hardware multithreaded processor maintains the state of more than one thread in architected hardware processors within the processor core. Several threads may execute in a multithreaded processor by merely changing the architected processor state in hardware registers each associated with a unique thread. The processor may change registers on every machine cycle or the processor may switch registers, or threads, when the processor is idle because, for instance, it is waiting for data or instructions from a more distant cache or memory. In this manner, remote systems and/or software view a single processor as one or more processors based on the number of hardware threads associated with the processor.
However, the number of hardware threads is limited by die area and performance. As the number of threads increase, the circuitry associated with supporting the additional threads increases in complexity and size making additional hardware threads impractical. Furthermore, performance is decreased as the number of hardware threads increase due to a limited number of read and write ports, and the overhead required for transferring the values between processor execution units and the hardware registers.